/*
 * To change this license header, choose License Headers in Project Properties.
 * To change this template file, choose Tools | Templates
 * and open the template in the editor.
 */
package runebound.random;

import java.util.ArrayList;
import java.util.List;
import java.util.Random;
import runebound.ui.mapa.Terreno;

/**
 *
 * @author malopez
 */
public class RBAzar {
 
    private static final RBAzar instance = new RBAzar();
    private Random random;
    private final List<Terreno[]> dadoTerreno = new ArrayList<>();
    private RBAzar(){
        this.random = new Random(new Random().nextLong());
        dadoTerreno.add(new Terreno[]{Terreno.CAMINO,Terreno.LLANURA,Terreno.COLINA});
        dadoTerreno.add(new Terreno[]{Terreno.PANTANO,Terreno.RIO});
        dadoTerreno.add(new Terreno[]{Terreno.CAMINO,Terreno.LLANURA,Terreno.COLINA});
        dadoTerreno.add(new Terreno[]{Terreno.CAMINO,Terreno.LLANURA,Terreno.MONTANYA});
        dadoTerreno.add(new Terreno[]{Terreno.CAMINO,Terreno.RIO});
        dadoTerreno.add(new Terreno[]{Terreno.BOSQUE,Terreno.RIO});
    }

    public static RBAzar getInstance() {
        return instance;
    }
    
    /**
     * Lanza dos dados de diez
     * @return 
     */
    public int dosDadosDiez(){
        int a = this.random.nextInt(10)+1;
        int b = this.random.nextInt(10)+1;
        return a+b;
    }

    public Tirada tiradaCombate() {
        int a = this.random.nextInt(10)+1;
        int b = this.random.nextInt(10)+1;
        return new Tirada(a, b);
    }
    
    /**
     * Genera una tirada de movimiento
     * @param nDados número de dados al tirar
     * @return 
     */
    public List<Terreno[]> getTiraraMovimiento(int nDados){
        List<Terreno[]> resultado = new ArrayList<>();
        for (int i = 0; i < nDados; i++) {
            int x = this.random.nextInt(6);
            resultado.add(this.dadoTerreno.get(x));
        }
        return resultado;
    }
    
    
}
